// 定义环境变量前缀
const project_name = 'XXJ';

const total_config = {
    port: 3000,
    jwtKey: 'RgVRWFBHGShlnOFHgaghkgHEJukepzL2axpkp9epV',
    database: get_mysql_config(),
    config: get_config(),
};

// 获取环境变量中的 jwtKey
function get_jwtKey() {
    let jwtKey = process.env[`${project_name}_JWT_KEY`];
    if (!jwtKey) {
        console.log('读取不到系统环境变量:');
        console.log(`    - ${project_name}_JWT_KEY`);
        process.exit(1);
    }
    return jwtKey;
}

// 获取mysql配置
function get_mysql_config() {
    let host = process.env[`${project_name}_MYSQL_HOST`];   // 数据库地址
    let port = process.env[`${project_name}_MYSQL_PORT`];   // 数据库端口
    let user = process.env[`${project_name}_MYSQL_USER`];   // 数据库用户名
    let pswd = process.env[`${project_name}_MYSQL_PSWD`];   // 数据库密码
    let database = process.env[`${project_name}_MYSQL_DB`]; // 数据库名称
    if (!host || !port || !user || !pswd || !database) {
        console.log('读取不到系统环境变量:');
        console.log(`    - ${project_name}_MYSQL_HOST`);
        console.log(`    - ${project_name}_MYSQL_PORT`);
        console.log(`    - ${project_name}_MYSQL_USER`);
        console.log(`    - ${project_name}_MYSQL_PSWD`);
        console.log(`    - ${project_name}_MYSQL_DB`);
        process.exit(1);
    }
    return { host, port, user, pswd, database };
}

// 程序中配置
function get_config() {
    return {
        // 用户
        username_length: 30,                // 用户名最大长度
        userType_length: 20,                // 用户类型最大长度
        phone_length: 30,                   // 用户手机最大长度
        account_length: 50,                 // 用户账户最大长度
        password_length: 200,               // 用户密码最大长度
        // token
        token_exp: '20h',                   // 用户 token 有效期
        // 医院科室
        hospital_length: 50,                // 医院名称最大长度
        department_length: 50,              // 科室名称最大长度
        departmentID_length: 20,            // 科室ID最大长度
        // 参数版本
        argvVersion_length: 50,             // 参数版本名称最大长度
        argvType_length: 50,                // 参数版本型号系列名称最大长度
        // 设备类型
        devType_length: 30,                 // 设备类型名称最大长度 (型号系列)
        devTypeName_length: 30,             // 设备名称最大长度     (设备名称)
        // 洗消记录
        patientName_length: 30,             // 患者姓名最大长度
        patientSex_length: 5,               // 患者性别最大长度
        patientID_length: 30,               // 患者ID最大长度
        doctorName_length: 30,              // 医生姓名最大长度
        remark_length: 500,                 // 备注最大长度
        diagnosisNumber_length: 30,         // 诊断编号最大长度
        hospitalizationNumber_length: 30    // 住院编号最大长度
    };
}

module.exports = total_config;